package com.example.demo.util;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;


/**
 * 
 * @author xiaohu
 *
 * @createTime 创建时间：2017年11月30日 下午2:48:37
 *  
 * 上传工具类  
 *
 */
public class UploadUtils {
	
	/**
	 * 从请求数据里取出数据
	 * @param request 
	 * @return List<MultipartFile>
	 */
	public static List<MultipartFile>  getMultiFile(MultipartHttpServletRequest request){
		List<MultipartFile> files=request.getMultiFileMap().get("files");
		if(files==null||files.size()==0){
			files=request.getMultiFileMap().get("file");
		}
		if(files==null||files.size()==0){
			files=request.getMultiFileMap().get("userupfile");
		}
		if(files==null||files.size()==0){
			files=request.getMultiFileMap().get("fileToUpload");
		}
		return files;
	}
	/**
	 * 默认文件后缀
	 */
	public final static String DEFAULT_IMG_FORMAT=".jpg";
	
	public final static String DEFAULT_FILE_FORMAT="";
	/**
	 * 获取文件后缀
	 * @param fileName 上传文件名
	 * @return 后缀
	 */
	public static String getFileFormat(String fileName,boolean isImage){
	    if(fileName!=null && !"".equals(fileName)){ 
	    	return fileName.substring(fileName.lastIndexOf("."));
	    }else{
	    	return isImage?DEFAULT_IMG_FORMAT:DEFAULT_FILE_FORMAT;
	    }
	}
	
	/**
	 * @param originalName 原文件名
	 * @param url          下载地址
	 * @param thumbnails   小图地址
	 * @return
	 */
	public static Map<String,String> getResult(String originalName ,String url,String thumbnails){
		Map<String,String> map =new HashMap<String, String>();
	    map.put("originalFileName", originalName);
	    map.put("imgUrl", "/"+url);
	    if(thumbnails==null){
	    	map.put("thumbnail", "");
	    }else{
	    	map.put("thumbnail", "/"+thumbnails);
	    }
	    return map;
	}
	
	/**
	 * 流转字节数组
	 * @param input
	 * @return
	 * @throws IOException
	 */
	public static  byte[] getBytes(InputStream input) throws IOException{
		ByteArrayOutputStream output = new ByteArrayOutputStream();  
        byte[] buffer = new byte[1024];  
        int len = -1;  
        while ((len = input.read(buffer)) != -1) {  
            output.write(buffer, 0, len);  
        }  
        return output.toByteArray();  
	}
	
	

}
